home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / editor / pagin608.zip / PAGINATE.TXT < prev    next >
Text File  |  1996-07-20  |  69KB  |  1,773 lines

  1. # % PAGINATE.TXT -- documentation for the PAGINATE command
  2. # % Please reformat using "PAGINATE PAGINATE.TXT PAGINATE.DOC /OVERWRITE /-I"
  3. # % (There's a batch file--PAGDOCS.BAT--that does this for you)
  4. # page=60
  5. # adjust
  6. # TITLE CENTER WIDTH=80
  7. ^O%12%                         ^B%3%                       Revised: ^A
  8.  
  9. # end
  10. # justify width 80
  11. # index "Column headers" "(See also HEADER)" DUMMY
  12. # index "END" "(See FOOTER)" DUMMY
  13. # index "END" "(See HEADER)" DUMMY
  14. # index "END" "(See MULTICOLUMN)" DUMMY
  15. # index "END" "(See TITLE)" DUMMY
  16. # index "END" "(See UNIT)" DUMMY
  17. # index "Error messages" "(See also /DEBUG parameter)" DUMMY
  18. # index "Environmental variable" "(See SET PAGINATE)" DUMMY
  19. # index "Formatting commands" "LENGTH" "(See WIDTH command)" DUMMY
  20. # index "PAGINATE.INI" "(See INI File)" DUMMY
  21. # index "PAGNOASC.INI" "(See Character-translation Table)" DUMMY
  22. # index "Printer" "(See RESET=string)" DUMMY
  23. # index "Printer" "(See SETUP=string)" DUMMY
  24. # index "INDEX" "(See INCLUDE INDEX)" DUMMY
  25. # index "Length" "Of line" "(See WIDTH command)" DUMMY
  26. # index "Length" "Of page" "(See PAGE command)" DUMMY
  27. # index "LENGTH" "(See WIDTH command)" DUMMY
  28. # index "Lines" "Across page" "(See RULE command)" DUMMY
  29. # index "Missing data values" "(See INMISS=val)" DUMMY
  30. # index "Missing data values" "(See INMISSC=val)" DUMMY
  31. # index "Missing data values" "(See OUTMISS=val)" DUMMY
  32. # index "Missing data values" "(See OUTMISSC=val)" DUMMY
  33. # index "Sorting" "Case-insensitive" "(See SORTI=varspec)" DUMMY
  34. # index "Sorting" "Descending" "(See SORTD=varspec)" DUMMY
  35. # index "SPACING=1" "(See also SINGLE)" DUMMY
  36. # index "SPACING=2" "(See also DOUBLE)" DUMMY
  37. # index "SPACING=3" "(See also TRIPLE)" DUMMY
  38. # index "Widow lines" "(See ADJUST)" DUMMY
  39. # index "Overview"
  40. The PAGINATE.EXE program formats text files containing embedded "marker"
  41. commands.  Specifically, the program can be used to:
  42. # unit
  43. # indent 4-2
  44.   * Align, justify, center text
  45.   * Add headers and footers to pages
  46.   * Add page breaks
  47.   * Control indentation
  48.   * Control spacing
  49.   * Sort the file (alphabetically, not numerically all that well) in either
  50. ascending or descending order.
  51.   * Generate indexes
  52.   * Select fields to print
  53.   * Print out dBase and ASCII-delimited files in tabular forms
  54.   * Bring ASCII-delimited and dBase files into existing text
  55.   * Translate characters
  56. # end
  57.  
  58. # index "National Institutes of Health"
  59. The PAGINATE.EXE program is based on a document-formatting language that exists
  60. on the mainframe computers at the National Institutes of Health in Bethesda, MD.
  61. The text editor used there is called WYLBUR and it does all sorts of wonderful
  62. things like creating programs.
  63.  
  64. For documentation, you use the WYLBUR text editor and insert document formatting
  65. codes.  These codes determine things like margins, indentation, justification,
  66. spacing, etc.  After you embed all of these formatting commands, you issue a
  67. PAGINATE command and everything's reformatted for you.
  68.  
  69. PAGINATE includes many of the WYLBUR pagination commands and then adds a number
  70. or database operations.
  71.  
  72. Typically, I do most of my text formatting using the PE2 text editor which
  73. I dearly love.  The main drags about using PE2 for text formatting are that:
  74. # unit
  75. # indent 4-2
  76.   * It doesn't do titles and footers
  77.   * It adds a space after every period followed by a space so "12 p.m. at the
  78. store" comes out as "12 p.m.  at the store"
  79.   * It doesn't handle the database functions (multicolumn printing, dBase,
  80. ASCII-delimited, and sorting) that are useful to have.
  81.   * It isn't sold anymore and I always hated PE3 after becoming an unwitting
  82. beta tester for them.  (Sorry guys but the free pen you gave me just didn't make up for the
  83. fact that it still didn't work right and I don't like paying to become a beta
  84. tester.)
  85. # end
  86.  
  87. # % Nope.  Can't generate a table of contents yet using PAGINATE.
  88. # % Maybe someday!
  89. # unit verbatim
  90. # indent 8
  91. Quick remaining contents:
  92.   Introduction to marker commands...................... pg  2
  93.   Sample files......................................... pg  4
  94.   Command reference:
  95.     Formatting commands................................ pg  4
  96.     Database-related functions......................... pg 10
  97.   Control codes........................................ pg 17
  98.   Varspecs............................................. pg 18
  99.   Field-definition file................................ pg 19
  100.   Specifying parameters................................ pg 20
  101.   Character-translation file........................... pg 20
  102.   Examples............................................. pg 22
  103.   Syntax............................................... pg 23
  104.   Author............................................... pg 25
  105.   Index................................................ pg 26
  106. # end
  107. #
  108. # index "Marker commands"
  109. Introduction to marker commands:
  110.  
  111. PAGINATE typically expects document formatting codes to be embedded in the text
  112. document itself.  If you want the same formating to be used through the entire
  113. document, however, you can pass in most of the arguments (see the "Syntax"
  114. discussion below) or use a separate control file instead.
  115.  
  116. The formatting codes are preceded by a "marker" character.  This is a character
  117. which begins in column 1 of the text (or control) file and is typically the
  118. character "#".  (When passing in the formatting codes, all codes are preceded by
  119. a "/".)
  120.  
  121. For example, you might have text like this:
  122.  
  123. # unit
  124. # verbatim
  125.         #align width 20
  126.         This is some sample text which you have asked to align.  The margins
  127.         will be placed at 1 and 20.  You can use an indent command to shift
  128.         the left margin if desired.
  129. # end
  130.  
  131.  
  132. This example shows one marker statement ("#align width 20") which contains two
  133. formatting commands:  "align" and "width 20".  Formatting commands are keyword
  134. specific.
  135.  
  136. You can put in commands on the same line which have no logical bearing to one
  137. another like "#align spacing=2".  Exceptions:
  138.  
  139.    * Do not do this for INCLUDE statements
  140.    * Do not do this for INDEX statement
  141.  
  142. # index "Semi-colons"
  143. Formatting commands can be separated by semi-colons for clarity but only a space
  144. is required.  The case of the marker statement is irrelevant.
  145.  
  146. After the PAGINATE command is run, the above text will come out like this:
  147.  
  148. # unit
  149. # verbatim
  150.         This is some sample
  151.         text which you have
  152.         asked to align.  The
  153.         margins will be
  154.         placed at 1 and 20.
  155.         You can use an
  156.         indent command to
  157.         shift the left
  158.         margin if desired.
  159. # end
  160.  
  161. #
  162. # index "Paragraphs"
  163. In terms of alignment, justification, variable indentation, etc, the system
  164. treats each paragraph as a separate entity.  A paragraph is defined as beginning
  165. with a blank line or a space.  For example:
  166.  
  167. # unit
  168. # verbatim
  169.         #justify width 25
  170.         This is one paragraph
  171.  
  172.         And this is another paragraph.
  173.         But this is the same paragraph.
  174.           New paragraph here.
  175. # end
  176.  
  177. Comes out as this:
  178.  
  179. # unit
  180. # verbatim
  181.         This is one paragraph
  182.  
  183.         And   this   is   another
  184.         paragraph.  But  this  is
  185.         the same paragraph.
  186.           New paragraph here.
  187. # end
  188.  
  189. # index "Range of formatting"
  190. Formatting commands cover a variety of functions.  Note that formatting within
  191. titles, footers, headers, and UNIT...END blocks does not affect formatting
  192. beyond the END statement.  For example, the width of the title below does not
  193. affect the width outside the title:
  194.  
  195. # unit
  196. # verbatim
  197.         # align width 50
  198.         This text is aligned width 50.  Here comes a title.
  199.         # title center width 70
  200.         This title is centered within width 70.
  201.  
  202.         # end
  203.         This text (outside the TITLE ... END block) is still being
  204.         aligned (not centered) to width 50 (not 70).
  205. # end
  206.  
  207. # index "Short lines"
  208. # index "Paragraphs" "One liners"
  209. Note that JUSTIFY and ALIGN do not affect lines which are on their own and do
  210. not continue to a second line and do not exceed the given page length.
  211.  
  212. As an example, note that the file names shown in the next section ("Sample
  213. files:") are not affected even though they are actually controlled by a JUSTIFY
  214. marker command.  This may seem like an error at times especially if you've
  215. already indented text; remember that indentation is the system's clue that there
  216. is a new paragraph so pre-indented text won't be affected much by the program.
  217.  
  218. This feature is, by the way, frequently useful in defining oddly formatted
  219. sections of text without needing to use a "# UNIT VERBATIM" statement around it;
  220. just make sure each line begins with at least one space and the program won't
  221. touch it.
  222.  
  223. #
  224. # index "Sample files"
  225. Sample files:
  226.  
  227. An example input file and its related components are included in this ZIP
  228. under PAGDEMO.*.  You can modify this and see how features are affected.  The
  229. demonstration files are as follows:
  230.  
  231. # % As is documented above, the following lines don't need a VERBATIM
  232. # % marker because they are short enough to not be affected by the JUSTIFY
  233. # % marker command.
  234.         PAGDEMO.BAT      Batch file that actually runs the demo file
  235.         PAGDEMO.#1       The primary file for the demo
  236.         PAGDEMO.#1D      The ASCII-delimited file brought in for the demo
  237.         PAGDEMO.#1C      The field-definition file used for the demo
  238.  
  239.  
  240. # rule=-
  241.                                COMMAND REFERENCE
  242. # rule=-
  243. # index "Formatting commands"
  244.                               Formatting commands
  245.  
  246.  
  247. # index "Equal signs"
  248. The following section describes the formatting commands alphabetically with some
  249. cross-referencing.  The commands are case insensitive ("align" and "ALIGN" are
  250. the same).  Typically, the equal signs are optional ("WIDTH=80" is the same as
  251. "WIDTH 80") except when used from the DOS command line.  Remember, the text
  252. line that these commands appear in must begin with the designated marker
  253. character (typically a "#").
  254.  
  255. # index "Formatting commands" "Default values"
  256. Default initial values (format commands):
  257.         FLAG=NULL
  258.         INDENT=0
  259.         INDENTER=NULL
  260.         WIDTH=80
  261.         MARKER=#
  262.         PAGE=60
  263.         PAGEEJECT=\012\013\010
  264.         SINGLE
  265.         VERBATIM
  266.  
  267. # indent 3-3
  268. # index "Formatting commands" "% (comments)"
  269. # index "% (comments)"
  270. %: Comments.  You can add comments after any marker command or you can embed
  271. them as marker commands all on their own.
  272.  
  273. # index "Formatting commands" "ADJUST"
  274. # index "ADJUST"
  275. ADJUST:  Tells the system to not write single lines on the bottom of a page.
  276. This is typically done to control "widow lines", cases where the first line of
  277. a paragraph prints on the bottom of one page and the remainder of the paragraph
  278. prints on the top of the next.
  279.  
  280. # index "Formatting commands" "-ADJUST"
  281. # index "-ADJUST"
  282. -ADJUST:  Says that "widow lines" are okay.
  283.  
  284. # index "Formatting commands" "ALIGN"
  285. # index "ALIGN"
  286. ALIGN:  Aligns text (uneven right margins) according to the default page width.
  287. See also: CENTER, JUSTIFY, RIGHT, VERBATIM, and WRAP.  See also WIDTH.
  288.  
  289. # index "Formatting commands" "-ALIGN"
  290. # index "-ALIGN"
  291. -ALIGN:  Same thing as VERBATIM.
  292.  
  293. # index "Formatting commands" "CENTER"
  294. # index "CENTER"
  295. CENTER:  Centers text according to the default page width.  Unlike ALIGN,
  296. JUSTIFY, and RIGHT, the CENTER command does not actually reflow any text.  If
  297. your line is wider than the specified width, it will not be split into multiple
  298. lines for you.  Note when CENTER is in effect, leading spaces are automatically
  299. removed from text lines so centering can be recalculated correctly.  See also:
  300. ALIGN, JUSTIFY, RIGHT, VERBATIM, and WRAP.  See also WIDTH.
  301.  
  302. # index "Formatting commands" "-CENTER"
  303. # index "-CENTER"
  304. -CENTER:  Same thing as VERBATIM.
  305.  
  306. # index "Formatting commands" "DOUBLE"
  307. # index "DOUBLE"
  308. DOUBLE:  Double-spaces all text.  See also: SINGLE, SPACING=n, and TRIPLE.
  309.  
  310. # index "Formatting commands" "EJECT"
  311. # index "EJECT"
  312. # index "Page-eject characters"
  313. EJECT:  Causes a new page to be created.  A regular decimal 12 character (the
  314. female symbol) is also treated as a page eject in the input file as long as it
  315. appears by itself on a line.  See also:  PAGEEJECT, PAGEEJECT=string, and
  316. PAGEFILL.
  317.  
  318. # index "Formatting commands" "EJECT FRONT"
  319. # index "EJECT FRONT"
  320. EJECT FRONT:  Same as EJECT but makes sure you are ejected to the next odd
  321. numbered page.
  322.  
  323. # index "Formatting commands" "EJECT BACK"
  324. # index "EJECT BACK"
  325. EJECT BACK:  Same as EJECT but makes sure you are ejected to the next even
  326. numbered page.
  327.  
  328. # index "Formatting commands" "FLAG"
  329. # index "FLAG"
  330. FLAG=string:  Allows you to set a character or set of characters that appears
  331. at the end of the lines that follow.  The location of the flag characters is
  332. the width of the line plus a space plus whatever string you specify.  For
  333. example, #flag="!" when #width=20 is in effect will result in "!" appearing
  334. at column 22 on each of the effected lines.  Initially defaults to FLAG=NULL.
  335. See also: INDENTER=string.
  336.  
  337. # index "Formatting commands" "FOOTER"
  338. # index "FOOTER"
  339. FOOTER ... END:  Defines a footer to appear at the bottom of each page.  Has
  340. same features that TITLE ... END has; see that discussion.
  341.  
  342. # index "Formatting commands" "-FOOTER"
  343. # index "-FOOTER"
  344. # index "FOOTER" "Deactivating"
  345. -FOOTER:  Turns off the current footer specification.  See FOOTER ... END.
  346.  
  347. # indent 3-3
  348. # index "Formatting commands" "INCLUDE filename"
  349. # index "INCLUDE filename"
  350. # index "Adding files"
  351. INCLUDE filename:  Adds another file to the processing.  This file is processed
  352. according to whatever formatting defaults are in use at that point.
  353.  
  354. # index "Formatting commands" "INDENT=n"
  355. # index "INDENT=n"
  356. INDENT=n:  Indents the text which follows by "n" spaces.  Essentially sets the
  357. left margin.  Default value: INDENT=0.  See also: INDENTER=string.
  358.  
  359. # index "Formatting commands" "INDENT=n-n"
  360. # index "INDENT n-n"
  361. # index "Bulleted text"
  362. INDENT=n-n:  Specifies that most of the lines of a paragraph are to be
  363. indented by "n" spaces whereas the first word of the first line is to be
  364. indented by "n-n" spaces.  For example, "INDENT 5-3" will indent the first word
  365. by two spaces and the subsequent lines by 5 spaces.  This is frequently used for
  366. bulleted text.  See also: INDENTER=string.
  367.  
  368. # indent 3
  369. # index "Bulleted text" "Tricks"
  370. Note with bulleted items that if you want single-spaced items bulleted, include
  371. a #paragraph statement before the next bullet.  This is only a problem because
  372. the routine doesn't start re-indenting text until it thinks it's at another
  373. paragraph.  (A blank line would have worked fine but you want it single spaced
  374. some times.) For example:
  375.  
  376. # unit verbatim
  377.         # indent 5-2
  378.         * This is one paragraph to be indented
  379.         # paragraph
  380.         * And this is another.
  381. # end
  382.  
  383. Remember that the indentation rule applies to the first word of the first line
  384. of a given paragraph.  That word can be a bullet (like an asterisk) but it can
  385. also be an actual word.  This is useful when the first words of different
  386. paragraphs are of different widths.  For example:
  387.  
  388. # unit verbatim
  389.         # indent 8-8
  390.         Home Takes you to the top line
  391.         # indent 8-8
  392.         End Takes you to the bottom line
  393.         # indent 8-8
  394.         F1 Presents help
  395. # end
  396.  
  397. This ends up like this:
  398.  
  399. # unit verbatim
  400.         Home    Takes you to the top line
  401.         End     Takes you to the bottom line
  402.         F1      Presents help
  403. # end
  404.  
  405. # index "Wrapping" "Faking out"
  406. # index "Alt-255 key"
  407. If you want, you can fake the system into thinking that multiple words are, in
  408. fact single words for indentation or word-wrapping purchases.  This is done by
  409. putting a non-printable character instead of a space character between the
  410. words.  A good character to use is Alt-255 (press the Alt key, while it's down,
  411. press the digits 2, 5, 5 on the numeric keypad, then release the Alt key).  This
  412. character shows up as a space but the system treats it as a regular character so
  413. it doesn't split up the words it's between.
  414.  
  415. Warning:  It's easy to forget you used Alt-255.  If you use Alt-255 frequently,
  416. remember to check for it with a hex text viewer (like LIST) when you're
  417. wondering why text didn't wrap or otherwise behave the way you expected.
  418.  
  419. Note that using INDENT=n-n causes pre-indented paragraphs to be treated
  420. differently than any other INDENT specification would.  Consider the following:
  421.  
  422. # unit verbatim
  423.         # -indent
  424.                 This is some
  425.                 sample text
  426.         # indent 3
  427.                 This is some
  428.                 sample text
  429.         # indent 3-3
  430.                 This is some
  431.                 sample text
  432. # end
  433.  
  434. In all cases, the system considers that any line that is either empty or begins
  435. with a space in fact starts a paragraph.  In the first case, the system says
  436. don't change any indentation for either line.  In the second case, the system
  437. figures new paragraphs for each line and additionally indents each line.  In the
  438. last case, the system knows that the first word is be de-indented so it removes
  439. leading spaces.  As a result, you get the following:
  440.  
  441. # unit verbatim
  442.                 This is some
  443.                 sample text
  444.                    This is some
  445.                    sample text
  446.         This is some
  447.         sample text
  448. # end
  449.  
  450. The use of #UNIT and #VERBATIM blocks is one way to insure consistency
  451. within indented sections even for single-line blocks of text.
  452.  
  453. # indent 3-3
  454. # index "Formatting commands" "INDENT=n+n"
  455. # index "INDENT=n+n"
  456. INDENT=n+n:  Specifies that most of the lines of a paragraph are to be
  457. indented by "n" spaces whereas the first line is to be indented by "n+n" spaces.
  458. For example, "INDENT 5+3" will indent the first line by eight spaces and the
  459. subsequent lines by 5 spaces.  See also: INDENTER=string.
  460.  
  461. # index "Formatting commands" "-INDENT"
  462. # index "-INDENT"
  463. -INDENT:  Same thing as INDENT=0.
  464.  
  465. # index "Formatting commands" "INDENTER"
  466. # index "INDENTER=string"
  467. # index "Elsie"
  468. INDENTER=string:  Specifies characters that are to be added to start of each
  469. indented line.  Is sometimes used for highlighting text.  Defaults to
  470. INDENTER=NULL.  See also: FLAG=string and INDENT=n.  For example,
  471.  
  472. # unit verbatim
  473.         # indent 4
  474.         # align width 30
  475.         # indenter="> "
  476.         My cat's name is Elsie.  It actually is "LC" and stands for
  477.         "Lost Cat" but it's "Elsie" for short.  Elsie's actually
  478.         male.  I thought it rude to check.
  479. # end
  480.  
  481. # indent 3
  482. Ends up as:
  483.  
  484. # unit verbatim
  485.         >   My cat's name is Elsie.
  486.         >   It actually is "LC" and
  487.         >   stands for "Lost Cat" but
  488.         >   it's "Elsie" for short.
  489.         >   Elsie's actually male.  I
  490.         >   thought it rude to check.
  491. # end
  492.  
  493. # indent 3-3
  494. # index "Formatting commands" "JUSTIFY"
  495. # index "JUSTIFY"
  496. JUSTIFY:  Justifies text (makes right margins flush) within the default page
  497. width.  See also:  ALIGN, CENTER, RIGHT, VERBATIM, and WRAP.  See also WIDTH.
  498.  
  499. # index "Formatting commands" "-JUSTIFY"
  500. # index "-JUSTIFY"
  501. -JUSTIFY:  Same thing as VERBATIM.
  502.  
  503. # index "Formatting commands" "MARKER=c"
  504. # index "MARKER=c"
  505. # index "Changing marker character"
  506. MARKER=c:  Defines the single-character marker indicator that will appear in
  507. column 1 of all subsequent lines.  Default value: MARKER=#.
  508.  
  509. # index "Formatting commands" "NEXT=n"
  510. # index "NEXT=n"
  511. NEXT=n:  Specifies which page number will appear the next time ^B appears in
  512. a title, footer, or header.  You can specify "-NEXT" or "NEXT=0" to start
  513. at 0.  Starts at NEXT=1 typically.
  514.  
  515. # index "Formatting commands" "-PAGE"
  516. # index "-PAGE"
  517. -PAGE:  Same as "PAGE=0".
  518.  
  519. # index "Formatting commands" "PAGE=n"
  520. # index "PAGE=n"
  521. PAGE=n:  Defines default page length.  You can say "PAGE=0" to set continuous
  522. pages.  (You have to have a page length specified if you're using the
  523. MULTICOLUMN option though.) Default value:  PAGE=60.
  524.  
  525. # index "Formatting commands" "PAGEEJECT"
  526. # index "PAGEEJECT"
  527. PAGEEJECT:  Says that pages are to be terminated with the standard page eject
  528. sequence (the female symbol--decimal 12--followed by a carriage return and line
  529. feed) instead of padding the pages with blank lines.  This is the default value
  530. and is the same thing as saying "PAGEEJECT=\012\013\010".  See also:
  531. PAGEEJECT=string and PAGEFILL.
  532.  
  533. # index "Formatting commands" "PAGEEJECT=string"
  534. # index "PAGEEJECT=string"
  535. PAGEEJECT=string:  Says that pages are to be terminated with a user-defined
  536. character sequence instead of padding the pages with blank lines.  The main
  537. reason for using this instead of just PAGEEJECT is if you want to remove the
  538. CR/LF that typically follows each page eject.  Another reason is to use
  539. "PAGEEJECT=1\013\010" for files being generated for IBM mainframes that use
  540. carriage control characters.  See also:  PAGEEJECT and PAGEFILL.
  541.  
  542. # index "Formatting commands" "PAGEFILL"
  543. # index "PAGEFILL"
  544. PAGEFILL:  Says that pages are to be ended by padding them with blank lines up
  545. to the specified PAGE=n value.  See also: PAGEEJECT and PAGEEJECT=string.
  546.  
  547. # index "Formatting commands" "PARAGRAPH"
  548. # index "PARAGRAPH"
  549. PARAGRAPH:  Says that a new paragraph is about to begin.  This is primarily used
  550. when you have something like bulleted text which might not be properly aligned.
  551. For example:
  552.  
  553. # unit verbatim
  554.         # align width 40 indent 5-2
  555.         * First bulleted item
  556.         # paragraph
  557.         * Second bulleted item.  Note that this would have been considered
  558.         to be part of the first paragraph since it started in column 1 and
  559.         there was no blank line between them.
  560. # end
  561.  
  562. # index "Formatting commands" "RIGHT"
  563. # index "RIGHT"
  564. RIGHT:  Moves all text to be flush to the right margin.  Doesn't adjust any
  565. spacing between words or anything.  See also:  ALIGN, CENTER, JUSTIFY, VERBATIM,
  566. and WRAP.  See also WIDTH.
  567.  
  568. # index "Formatting commands" "-RIGHT"
  569. # index "-RIGHT"
  570. -RIGHT:  Same thing as VERBATIM.
  571.  
  572. # index "Formatting commands" "RULE"
  573. # index "RULE string"
  574. RULE=string:  Specifies that a string is to be repeated the width of the line.
  575. This is used to separate sections.  The string can be a single character (like
  576. "RULE=-"), multiple characters (like "RULE="- ""), it can contain decimal and
  577. hexadecimal characters (like "RULE=\066\097\116"), it can be "RULE=NULL" (which
  578. typically results in a blank line), or just simply "RULE" (which is the same
  579. thing as "RULE=-").  Personally, if your printer supports IBM graphics
  580. characters, I find RULE=\196 to be the most pleasing of the rule lines.  (See
  581. BRUCEHEX.DOC file.)
  582.  
  583. # index "Formatting commands" "SINGLE"
  584. # index "SINGLE"
  585. SINGLE:  Single-spaces all text.  This is the default spacing.  See also:
  586. DOUBLE, SPACING=n, and TRIPLE.
  587.  
  588. # index "Formatting commands" "SPACING=n"
  589. # index "SPACING=n"
  590. SPACING=n:  Sets spacing between lines as "n" number of lines.  See also:
  591. DOUBLE (which is SPACING=2), SINGLE (SPACING=1), and TRIPLE (SPACING=3).
  592.  
  593. # index "Formatting commands" "TITLE"
  594. # index "TITLE"
  595. TITLE ...  END:  Defines a title to appear at the top of each page.  Any number
  596. of lines can appear in the title.  The title ends with a marker line that
  597. contains the "end" command; if no "end" command is provided, the program
  598. presumes there is one after the last line of your file.  Spacing, indentation,
  599. width, and alignment cannot vary within the title; the last one assigned will
  600. win.  See "control codes" discussion below for characters that can appear in the
  601. title.  To eliminate the title, define a title without any lines in it.  See
  602. also:  FOOTER ...  END, HEADER ...  END and UNIT ...  END.  Example:
  603.  
  604. # unit verbatim
  605.         # title center width=80
  606.         This is my program!
  607.  
  608.         # end
  609. # end
  610.  
  611. # indent 3
  612. If you plan to change the title within the document, make sure you redefine
  613. it before the new page is generated.  For example:
  614.  
  615. # unit verbatim
  616.         (text)
  617.         # title center width=80
  618.         Index
  619.  
  620.         # end
  621.         #
  622. # end
  623.  
  624. If you define it after the page eject, the new title will not take effect until
  625. a subsequent page (if any) is generated.  By the same token, make sure the title
  626. is defined in the document before any text is filled in if you want the title to
  627. appear on the very first page of the reformatted document.
  628.  
  629. A very useful title is the following:
  630.  
  631. # unit verbatim
  632.         # title center width=80
  633.         ^O%12%                         ^B%3%                       Revised: ^A
  634.  
  635.         # end
  636. # end
  637.  
  638. Consult the control code discussion afterward but this will fill in the output
  639. file's name (taking up 12 spaces so all of your titles look about the same),
  640. the page number (taking up 3 spaces for the page number), and the input file's
  641. date.
  642.  
  643. # indent 3-3
  644. # index "Formatting commands" "-TITLE"
  645. # index "-TITLE"
  646. # index "TITLE" "Deactivating"
  647. -TITLE:  Turns off the current title specification.  See TITLE ... END.
  648.  
  649. # index "Formatting commands" "TRIPLE"
  650. # index "TRIPLE"
  651. TRIPLE:  Triple-spaces all text.  See also: DOUBLE, SINGLE, and SPACING=n.
  652.  
  653. # index "Formatting commands" "UNIT"
  654. # index "UNIT"
  655. UNIT ... END:  Defines a unit of text with its own unique formatting.  Units
  656. can have formatting which differs from the text around it and changing the
  657. formatting within the Unit will not affect the other text.  Has same features
  658. that TITLE ... END has; see that discussion.
  659.  
  660. # indent 3
  661. A typical use for the UNIT command is in combination with VERBATIM.  This is
  662. frequently used when you're aligning or justifying most of the text and then you
  663. have one section that isn't to be changed at all.
  664.  
  665. # indent 3-3
  666. # index "Formatting commands" "VERBATIM"
  667. # index "VERBATIM"
  668. VERBATIM:  Specifies that the text which follows should not be aligned,
  669. justified, etc.  See also: ALIGN, CENTER, JUSTIFY, RIGHT, and WRAP.  See also
  670. WIDTH.
  671.  
  672. # index "Formatting commands" "WIDTH=n"
  673. # index "WIDTH=n"
  674. WIDTH=n:  Specifies the default line width.  (Page lengths are controlled by the
  675. PAGE=command.) Default value:  WIDTH=80.  (Note that LENGTH=n is accepted as a
  676. synonym for WIDTH=n.) See also:  ALIGN, CENTER, JUSTIFY, RIGHT, VERBATIM, and
  677. WRAP.
  678.  
  679. # index "Formatting commands" "WRAP"
  680. # index "WRAP"
  681. WRAP:  Specifies that long lines (longer than the specified line width) in the
  682. text which follows should be wrapped.  Lines which are shorter than the
  683. specified line width are not affected at all.  Primarily of use in files
  684. produced by a word-processor since they typically write the entire paragraph as
  685. a stream.  See also:  ALIGN, CENTER, JUSTIFY, RIGHT, and VERBATIM.   See also
  686. WIDTH.
  687.  
  688. # index "Formatting commands" "-WRAP"
  689. # index "-WRAP"
  690. -WRAP:  Same thing as VERBATIM.
  691.  
  692. #
  693. # index "Database-related commands"
  694. # indent 0
  695. # rule=-
  696.                            Database-related functions
  697.  
  698. The PAGINATE command provides some features to allow you to use it to read in
  699. and print out ASCII-delimited and dBase files.  For example:
  700.  
  701.         # from ascii
  702.         "Apples",10,5
  703.         "Bananas",20,10
  704.  
  705. will come out as:
  706.  
  707.         Apples   10  5
  708.         Bananas  20 10
  709.  
  710. You can use this capability to embed tables within a report.  You can also
  711. combine this with SORT=varspec, SELECT=varspec, and SUM=varspec specifications
  712. to have the report sorted on specified columns or to subset the columns that get
  713. printed out.  There are some restrictions to all of this and these are described
  714. within each option as appropriate below.
  715.  
  716. NOTE:  In general, combining FROM ASCII or FROM DBF or several of the other
  717. data-base related functions with options like ALIGN and JUSTIFY will not work.
  718. The formatting options will, in general, be ignored.
  719.  
  720. # index "Sorting" "Example"
  721. It's often the case that you will want to deal only with a single data set,
  722. and you'll have no need for actual text.  For example, let's say that you really
  723. want something that will sort a file that contains a lot of data.  No problem:
  724.  
  725.         PAGINATE infile outfile /-PAGE /SORT=1,10
  726.  
  727. # index "dBase files" "Example"
  728. Another example would be that you have something like a dBase file and you want
  729. to print it out.  Again, no problem.  Create a simple control file:
  730.  
  731. # unit
  732. # verbatim
  733.         # heading
  734.         ^H
  735.  
  736.         # end
  737.         # from dbf
  738.         # include sample.dbf
  739. # end
  740.  
  741. and then create your tables with:
  742.  
  743.         PAGINATE ctlfile outfile
  744.  
  745. In general, keep in mind that sorting, totaling, and other special data base
  746. function requests should appear before the data are actually read in.  This
  747. means #SORT or #SUM should appear before the #INCLUDE statement.
  748.  
  749.  
  750. #
  751. # index "Database-related commands" "Default values"
  752. Default initial values (database-related functions):
  753.  
  754.         BAD=ABORT
  755.         -BREAK
  756.         -DELETED
  757.         DELIMS=",,,
  758.         FROM FIXED
  759.         GAP=2
  760.         INMISS=NULL
  761.         INMISSC=NULL
  762.         OUTMISS=NULL
  763.         OUTMISSC=NULL
  764.         SELECT=NULL
  765.         SEPARATOR=" | "
  766.         SORT=NULL
  767.         SUM=NULL
  768.  
  769. # indent 3-3
  770. # index "Database-related commands" "BAD=ABORT"
  771. # index "BAD=ABORT"
  772. BAD=ABORT:  Says that if the program runs into an invalid data value,
  773. it should abort processing entirely.
  774.  
  775. # index "Database-related commands" "BAD=MISSING"
  776. # index "BAD=MISSING"
  777. BAD=MISSING:  Says that if the program runs into an invalid data value, it
  778. should set the value of that variable as "missing" and continue processing.
  779.  
  780. # index "Database-related commands" "BAD=SKIP"
  781. # index "BAD=SKIP"
  782. BAD=SKIP:  Says that if the program runs into an invalid data value, it should
  783. skip the entire data record and continue processing with the next record.
  784.  
  785. # index "Database-related commands" "BREAK"
  786. # index "BREAK"
  787. BREAK=varspec:  BREAK provides a way of generating subtotals or subgroupings
  788. within a listing.  Whenever the value of the variable specified changes, the
  789. program will generate either a blank line or a subtotal (if SUM=varspec has been
  790. specified).  If subtotals are generated, at the end it will generate a grand
  791. total.
  792.  
  793. # index "Database-related commands" "BREAK NULL"
  794. # index "BREAK NULL"
  795. BREAK=NULL:  Turns off all subtotalling.  This is initially the default.
  796.  
  797. # index "Database-related commands" "-BREAK"
  798. # index "-BREAK"
  799. -BREAK:  Same as BREAK=NULL.
  800.  
  801. # index "Database-related commands" "DELETED"
  802. # index "DELETED"
  803. DELETED:  Says to process deleted records as well as non-deleted records from
  804. dBase files.
  805.  
  806. # index "Database-related commands" "-DELETED"
  807. # index "-DELETED"
  808. -DELETED:  Says to skip deleted records.
  809.  
  810. # index "Database-related commands" "DELIMS"
  811. # index "DELIMS"
  812. # index "Hexadecimal codes"
  813. DELIMS=aroundstrings,aroundnums,betweenfields:  Allows you to specify the
  814. delimiters (in sequence) around string fields, around numeric fields, and
  815. between fields.  Defaults to:
  816.  
  817. # unit verbatim
  818.         DELIMS=",,,
  819. # end
  820.  
  821. # indent 3
  822. (Use quotes around character strings, nothing around numeric data, and the third
  823. comma indicates that there is a comma between fields.) The replacement string
  824. can include hexadecimal codes (in the &Hxx format) or decimal codes (in the \ddd
  825. format) if necessary so either of the following would put a tab between fields:
  826.  
  827. # unit verbatim
  828.         DELIMS=",,&H09
  829.         DELIMS=",,\009
  830. # end
  831.  
  832. See the BRUCEHEX.DOC file.
  833.  
  834. # indent 3-3
  835. # index "Database-related commands" "FROM ASCII"
  836. # index "FROM ASCII"
  837. # index "ASCII-delimited files"
  838. # index "Files" "ASCII-delimited"
  839. FROM ASCII:  Specifies that the next non-marker lines contain ASCII-delimited
  840. records.  The ASCII-delimited records can be embedded within the report or
  841. stored as a separate file (brought in with an INCLUDE statement).  See also:
  842. FROM DBF and FROM FIXED and most of the other commands in this section.  See
  843. also:  "Field-definition file" discussion.
  844.  
  845. # index "Database-related commands" "FROM DBF"
  846. # index "FROM DBF"
  847. # index "dBase files"
  848. # index "Files" "dBase"
  849. FROM DBF:  Specifies that the next INCLUDE statement is a dBase file.  Unlike
  850. with FROM FIXED and FROM ASCII, the dBase file has to be external to the control
  851. cards.  The output itself, however, will be included with the regular output
  852. file.  See also: FROM ASCII and FROM FIXED and most of the other commands in
  853. this section.  See also: "Field-definition file" discussion.
  854.  
  855. # index "Database-related commands" "FROM FIXED"
  856. # index "FROM FIXED"
  857. FROM FIXED:  Specifies that the input file is a fixed-field file.  Any document
  858. with regular text (e.g. a letter to your best buddy) is considered fixed-field
  859. by the program; if you classify it as anything else, the program will try to
  860. parse it all.  See also:  FROM ASCII and FROM DBF.
  861.  
  862. # index "Database-related commands" "-GAP"
  863. # index "-GAP"
  864. -GAP:  Same as "GAP=0".
  865.  
  866. # index "Database-related commands" "GAP=n"
  867. # index "GAP=n"
  868. GAP=n:  Specifies the number of spaces to appear between columns when printing
  869. fielded data.  If, for example, two columns of numbers are printed, the GAP
  870. parameter specifies that "n" number of spaces are to appear between these
  871. columns.  You can specify "GAP=0" if you don't want any gap to be inserted.
  872. Defaults to GAP=2.
  873.  
  874. # index "Database-related commands" "HEADER"
  875. # index "HEADER"
  876. # index "Column headers"
  877. HEADER ... END:  Defines a set of column headers that should appear before
  878. the actual data.  Typically, you can bring these in from the actual dBase file
  879. or else use whatever you've specified in the field-definition file by using the
  880. "^H" control code.  Headers are affected by the MULTICOLUMN specification.
  881. Otherwise, they are treated pretty much like Titles and Footers.  See the
  882. discussion of TITLE ... END.
  883.  
  884. # index "Formatting commands" "-HEADER"
  885. # index "-HEADER"
  886. # index "HEADER" "Deactivating"
  887. -HEADER:  Turns off the current header specification.  See HEADER ... END.
  888.  
  889. # index "Database-related commands" "INCLUDE filename"
  890. # index "INCLUDE filename"
  891. # index "Files" "Adding"
  892. INCLUDE filename:  Adds text from another file in at this point.  If the routine
  893. has been told that this is a FROM DBF or FROM ASCII file, it will process the
  894. file appropriately.  The filename specification can include drive and path
  895. information if desired.
  896.  
  897. # index "Database-related commands" "INCLUDE INDEX"
  898. # index "INCLUDE INDEX"
  899. INCLUDE INDEX:  Creates an index listing at this point in the document.  See
  900. also: INDEX.
  901.  
  902. # index "Database-related commands" "INDEF filename"
  903. # index "INDEF filename"
  904. # index "Field-definition file"
  905. INDEF filename:  Specifies that the file characteristics for the input file
  906. which follows are contained in a field-definition file specified as "filename".
  907. The filename spec can include drive and path information if desired.  See the
  908. discussion of "Field-definition files" below.  See also: INDEF NULL.
  909.  
  910. # index "Database-related commands" "INDEF NULL"
  911. # index "INDEF NULL"
  912. INDEF NULL:  Says there is no input file definition for what follows.  Typically
  913. used to turn off the previously-specified input field-definition file.  See
  914. also: INDEF filename.
  915.  
  916. # index "Database-related commands" "-INDEF"
  917. # index "-INDEF"
  918. -INDEF:  Same thing as INDEF NULL.
  919.  
  920. # index "Database-related commands" "INDEX"
  921. # index "INDEX"
  922. # index "See Also references"
  923. INDEX "word" [ "word" ]...  [DUMMY]:  Saves an index record, with the specified
  924. text and the current page number, at this point.  The index is then printed out
  925. when you add an INCLUDE INDEX option.  The multiple word specifications allow
  926. you to specify up to 3 levels of indexing.  For example,
  927.  
  928. # unit verbatim
  929.         # index "Computers" "Maintenance"
  930.         # index "Computers" "Hardware"
  931.         # eject
  932.         # index "Computers" "Hardware"
  933.         # index "Computers" "Software"
  934.         # include index
  935. # end
  936.  
  937. # indent 3
  938. will generate output that looks in part like this:
  939.  
  940. # unit verbatim
  941.         Computers
  942.           Hardware; 1, 2
  943.           Maintenance; 1
  944.           Software; 2
  945. # end
  946.  
  947. # index "MULTICOLUMN" "With INDEX"
  948. # index "INDEX" "With MULTICOLUMN"
  949. You can use MULTICOLUMN in combination with the INDEX command.  Just make sure
  950. you specify the MULTICOLUMN before the INCLUDE INDEX statement as in:
  951.  
  952. # unit verbatim
  953.         # multicolumn 3
  954.         # include index
  955. # end
  956.  
  957. # index "DUMMY index references"
  958. If DUMMY is specified, the page number is not displayed for this item.  This is
  959. typically done when you want the index to provide a cross-reference but you
  960. don't really want any page numbers showing up.  For example:
  961.  
  962. # unit verbatim
  963.         # index "Hardware" "(See Computers)" DUMMY
  964. # end
  965.  
  966. My personal preference is to put all DUMMY index references near the start of
  967. your document so you can find them more easily.
  968.  
  969. # indent 3-3
  970. # index "Database-related commands" "INMISS=val"
  971. # index "INMISS=val"
  972. INMISS=val:  Specifies for ASCII-delimited and dBase input files which numeric
  973. values are to be considered indicators for missing values.  Missing values
  974. are not included in summations.  Defaults to INMISS=NULL.  See also:
  975. INMISSC=val, OUTMISS=val, and OUTMISSC=val.
  976.  
  977. # index "Database-related commands" "INMISSC=val"
  978. # index "INMISSC=val"
  979. INMISSC=val:  Specifies for ASCII-delimited and dBase input files which
  980. character values are to be considered indicators for missing values.  Defaults
  981. to INMISSC=NULL.  See also: INMISS=val, OUTMISS=val, and OUTMISSC=val.
  982.  
  983. # index "Database-related commands" "MULTICOLUMN"
  984. # index "MULTICOLUMN"
  985. # index "SEPARATOR" "With MULTICOLUMN"
  986. MULTICOLUMN=n ...  END:  Specifies that a given block is to be arranged in a
  987. multicolumn format.  The number of columns is specified as "n"; "MULTICOLUMN=2"
  988. would set up a dual-column output.  The SEPARATOR string appears between each of
  989. the columns.  (MULTICOLUMN", by the way, can be abbreviated "MULTI" or
  990. "MULTICOL".)
  991.  
  992. # indent 3
  993. Make sure you put any CENTER or ALIGN or whatever statements after the
  994. MULTICOLUMN statement (VERBATIM will result in lines being truncated).  Any
  995. width specification ("MULTICOLUMN=2 WIDTH=80") is used to determine the total
  996. line width, not the width of each column within the line.  The width of each
  997. column is the total line width (typically 80) divided by the number of columns
  998. minus the width of the separator string.
  999.  
  1000. Otherwise, MULTICOLUMN has the same features that TITLE ...  END has; see that
  1001. discussion.  (Remember, unless provided otherwise, the "END" command is presumed
  1002. to be after the last line of your input file.) See also:  SEPARATOR=string.
  1003. Example:
  1004.  
  1005. # unit verbatim
  1006.         # multicolumn 3 separator=" | "
  1007.         lines
  1008.         lots of lines
  1009.         still more
  1010.         # end
  1011. # end
  1012.  
  1013. # indent 3-3
  1014. # index "Database-related commands" "NULLS"
  1015. # index "NULLS"
  1016. NULLS:  Says that the program will accept values that begin with a decimal
  1017. zero as being a valid value.  Defaults to NULLS.  See also: -NULLS.
  1018.  
  1019. # index "Database-related commands" "-NULLS"
  1020. # index "-NULLS"
  1021. -NULLS:  Says that values which begin with a decimal zero should be treated
  1022. as missing by the program.  Defaults to NULLS.  See also: NULLS.
  1023.  
  1024. # index "Database-related commands" "OUTDEF filename"
  1025. # index "OUTDEF filename"
  1026. # index "Field-definition file"
  1027. OUTDEF filename:  Specifies the field-definition file to create.  Typically, the
  1028. only reason you'd ever use this command is if you want the program to create a
  1029. field-definition file for a dBase input file.  (See the discussion of
  1030. "Field-definition file" later.)  See also:  OUTDEF NULL.
  1031.  
  1032. # index "Database-related commands" "OUTDEF NULL"
  1033. # index "OUTDEF NULL"
  1034. OUTDEF NULL:  Turns off the output field-definition file specification.  See
  1035. also: OUTDEF filename.
  1036.  
  1037. # index "Database-related commands" "-OUTDEF"
  1038. # index "-OUTDEF"
  1039. -OUTDEF:  Same as OUTDEF NULL.
  1040.  
  1041. # index "Database-related commands" "OUTMISS=val"
  1042. # index "OUTMISS=val"
  1043. OUTMISS=val:  Specifies what value will be substituted for missing numeric
  1044. input values on output.  Initially defaults to OUTMISS=NULL.  See also:
  1045. INMISS=val, INMISSC=val, and OUTMISSC=val.
  1046.  
  1047. # index "Database-related commands" "OUTMISSC=val"
  1048. # index "OUTMISSC=val"
  1049. OUTMISSC=val:  Specifies what value will be substituted for missing character
  1050. input values on output.  Initially defaults to OUTMISSC=NULL.  See also:
  1051. INMISS=val, INMISSC=val, and OUTMISS=val.
  1052.  
  1053. # index "Database-related commands" "RESET=string"
  1054. # index "RESET=string"
  1055. RESET=string:  Specifies a character string to stick at the end of the file, to
  1056. reset the printer after the document is printed.  A page eject character (or any
  1057. other user-defined string in the case of PAGEEJECT=string) is typically added
  1058. automatically if /EJECT is specified.  The string can contain special characters
  1059. by using a "\" followed by the three-digit ASCII code for the character.  The
  1060. typical use for this would be to issue a printer reinitialization string.  On a
  1061. Hewlett-Packard printer, this would probably be RESET=\027E.  See also:
  1062. SETUP=string.
  1063.  
  1064. # index "Database-related commands" "SELECT=varspec"
  1065. # index "SELECT=varspec"
  1066. SELECT=varspec:  Specifies which variables or columns should show up in the
  1067. ultimate file.  This allows you to take, for example, a text file and only print
  1068. the middle 10 columns of it or else to take a dBase file and only print certain
  1069. variables.  See the discussion of "Varspecs" later.  See also: SELECT=NULL.
  1070.  
  1071. # index "Database-related commands" "SELECT=NULL"
  1072. # index "SELECT=NULL"
  1073. SELECT=NULL:  Specifies that all variables or columns should show up.  This is
  1074. initially the default.  See also: SELECT=varspec.
  1075.  
  1076. # index "Database-related commands" "-SELECT"
  1077. # index "-SELECT"
  1078. -SELECT:  Same thing as SELECT=NULL.
  1079.  
  1080. # index "Database-related commands" "SEPARATOR"
  1081. # index "SEPARATOR"
  1082. SEPARATOR=string:  Specifies the string to appear between columns in a
  1083. multicolumn output.  The string can contain special characters by using a "\"
  1084. followed by the three-digit ASCII code for the character.  For example, to have
  1085. a graphic vertical bar, use SEPARATOR=\032\179\032 or else enter it directly as
  1086. SEPARATOR=" │ ".  Initially defaults to SEPARATOR=" | ".  (In case that reflows
  1087. when you reformat this documentation, that's quote, space, vertical bar, space,
  1088. quote).  See also:  MULTICOLUMN=n.
  1089.  
  1090. # index "Database-related commands" "SETUP=string"
  1091. # index "SETUP=string"
  1092. SETUP=string:  Specifies the character string to strick at the beginning of the
  1093. file, to initialize the printer before the document is printed.  Typically, you
  1094. might use an initialization string that sets the printer in compressed,
  1095. landscape, or whatever mode.  The string can contain special characters by using
  1096. a "\" followed by the three-digit ASCII code for the character.  On a
  1097. Hewlett-Packard printer, this would typically be one of the following codes:
  1098.  
  1099. # unit verbatim
  1100.         SETUP=\027E             (portrait mode, 80 column)
  1101.         SETUP=\027E\027(s16.66H (portrait mode, 132 column)
  1102. # end
  1103.  
  1104. # indent 3
  1105. On an Epson MX dot-matrix printer, you would typically use these codes:
  1106.  
  1107. # unit verbatim
  1108.         SETUP=\015              (portrait mode, 80 column)
  1109.         SETUP=\018              (portrait mode, 132 column)
  1110. # end
  1111.  
  1112. See also: RESET=string.
  1113.  
  1114. # indent 3-3
  1115. # index "Database-related commands" "SORT=varspec"
  1116. # index "SORT=varspec"
  1117. SORT=varspec:  Specifies that the lines which follow should be sorted according
  1118. to a particular group of columns or variables.  See the discussion of "Varspecs"
  1119. later.  Sorting is done based on a case-sensitive search ("Apple" and "Banana"
  1120. will appear before "air").  Note that sorting works well for character strings
  1121. but negative numbers can cause it all sorts of problems.  The sort field
  1122. specification is limited to 50 characters.  Note that you cannot combine sorting
  1123. specifications (e.g.  descending for some columns and ascending for others.)
  1124. Initially defaults to SORT=NULL.  See also:  SORT=NULL.  Basic sorting
  1125. specifications available here (see each separately):
  1126.  
  1127. # unit verbatim
  1128.         SORT      --> case-sensitive, ascending sort
  1129.         SORTD     --> case-sensitive, descending sort
  1130.         SORTI     --> case-insensitive, ascending sort
  1131.         SORTDI    --> case-insensitive, descending sort
  1132.         SORTID    --> case-insensitive, descending sort
  1133. # end
  1134.  
  1135. # index "Database-related commands" "SORT=NULL"
  1136. # index "SORT=NULL"
  1137. SORT=NULL:  Turns off any sorting specification.  This statement is vital if you
  1138. have any text appearing after a sorted section.  Remember, you cannot have
  1139. multiple sorting specifications going on so this is the same as all of the
  1140. following:  -SORT, -SORTI, -SORTD, -SORTID, -SORTDI, SORTI=NULL, SORTD=NULL,
  1141. SORTDI=NULL, and SORTID=NULL.  This statement is initially the default.
  1142.  
  1143. # index "Database-related commands" "-SORT"
  1144. # index "-SORT"
  1145. -SORT:  Same as SORT=NULL.
  1146.  
  1147. # index "Database-related commands" "SORTD=varspec"
  1148. # index "SORTD=varspec"
  1149. SORTD=varspec:  Similar to SORT=varspec but sorting is done in descending
  1150. sequence.  See SORT=varspec and SORT=NULL.
  1151.  
  1152. # index "Database-related commands" "SORTD=NULL"
  1153. # index "SORTD=NULL"
  1154. SORTD=NULL:  Same as SORT=NULL.
  1155.  
  1156. # index "Database-related commands" "-SORTD"
  1157. # index "-SORTD"
  1158. -SORTD:  Same as SORT=NULL.
  1159.  
  1160. # index "Database-related commands" "SORTDI=varspec"
  1161. # index "SORTDI=varspec"
  1162. SORTDI=varspec:  Similar to SORT=varspec but sorting is done in descending
  1163. sequence and sorting is case insensitive.  Identical to SORTID=varspec.  See
  1164. SORT=varspec and SORT=NULL.
  1165.  
  1166. # index "Database-related commands" "SORTDI=NULL"
  1167. # index "SORTDI=NULL"
  1168. SORTDI=NULL:  Same as SORT=NULL.
  1169.  
  1170. # index "Database-related commands" "-SORTDI"
  1171. # index "-SORTDI"
  1172. -SORTDI:  Same as SORT=NULL.
  1173.  
  1174. # index "Database-related commands" "SORTI=varspec"
  1175. # index "SORTI=varspec"
  1176. SORTI=varspec:  Same as SORT=varspec except the sorting is done in a
  1177. case-insensitive manner ("big" shows up between "Apple" and "Caramel").  See
  1178. SORT=varspec and SORT=NULL.
  1179.  
  1180. # index "Database-related commands" "SORTI=NULL"
  1181. # index "SORTI=NULL"
  1182. SORTI=NULL:  Same as SORT=NULL.
  1183.  
  1184. # index "Database-related commands" "-SORTI"
  1185. # index "-SORTI"
  1186. -SORTI:  Same as SORT=NULL.
  1187.  
  1188. # index "Database-related commands" "SORTID=varspec"
  1189. # index "SORTID=varspec"
  1190. SORTID=varspec:  Same as SORTDI=varspec.
  1191.  
  1192. # index "Database-related commands" "SORTID=NULL"
  1193. # index "SORTID=NULL"
  1194. SORTID=NULL:  Same as SORT=NULL.
  1195.  
  1196. # index "Database-related commands" "-SORTID"
  1197. # index "-SORTID"
  1198. -SORTID:  Same as SORT=NULL.
  1199.  
  1200. # index "Database-related commands" "SUM"
  1201. # index "Adding Columns Of Numbers" "(See SUM)" DUMMY
  1202. # index "SUM"
  1203. SUM=varspec:  Summarizes a group of numbers and presents the total after the
  1204. items are displayed.  Initially defaults to SUM=NULL.  See also:  SUM=NULL.
  1205.  
  1206. # indent 3
  1207. An example of summing might be like the following:
  1208.  
  1209. # unit verbatim
  1210.   # from fixed
  1211.   # sort=28-34
  1212.   # sum=28-34,43-49,57-62,73-78
  1213.    370 DISK STORAGE           $75.14         $35.58       $23.28          $49.16
  1214.    370 DISK STORAGE           $12.80          $6.26        $6.24          $12.76
  1215.    370 DISK STORAGE            $0.00          $0.00        $0.00           $0.00
  1216.    370 DISK STORAGE            $0.00          $0.00       $11.38          $22.76
  1217.    370 DISK STORAGE           $61.56         $29.64       $11.40          $23.68
  1218.    370 DISK STORAGE            $0.00          $0.00        $0.00           $0.00
  1219.    370 DISK STORAGE            $0.72          $0.13        $0.13           $0.72
  1220.    370 DISK STORAGE            $1.99          $0.13        $1.64          $16.40
  1221.    370 DISK STORAGE            $0.00          $0.00        $0.00           $0.00
  1222.    370 DISK STORAGE            $0.27          $0.13        $0.13           $0.27
  1223.    370 DISK STORAGE            $0.00          $0.00        $0.00           $0.00
  1224.    370 DISK STORAGE          $195.48         $94.12       $39.28          $81.58
  1225.    370 DISK STORAGE            $0.00          $0.00        $0.00           $0.00
  1226.    370 DISK STORAGE          $130.01         $90.84       $24.99          $35.77
  1227.    370 DISK STORAGE            $8.10          $3.90        $2.62           $5.44
  1228.   # -sum
  1229. # end
  1230.  
  1231. This will sort the 15 lines and summarize the four columns of numbers.
  1232.  
  1233. # indent 3-3
  1234. # index "Database-related commands" "SUM=NULL"
  1235. # index "SUM=NULL"
  1236. SUM=NULL:  Turns off summarization.
  1237.  
  1238. # index "Database-related commands" "-SUM"
  1239. # index "-SUM"
  1240. -SUM:  Same as SUM=NULL.
  1241.  
  1242. #
  1243. # indent 0
  1244. # index "Control codes"
  1245. # index "Page numbers"
  1246. # index "Date-stamps"
  1247. # index "Time-stamps"
  1248. # index "Column headers"
  1249. # index "Titles"
  1250. # index "^B"
  1251. # index "^D"
  1252. # index "^T"
  1253. # index "^N"
  1254. # index "^A"
  1255. # index "^I"
  1256. # index "^H"
  1257. # index "^O"
  1258. # index "%n%"
  1259. Control codes:
  1260.  
  1261. Within titles, headers, and footers, you can embed the following codes.  These
  1262. codes are case-sensitive; "^b^" will not translated as the current page number.
  1263. These codes will be expanded on output:
  1264.  
  1265.         ^B      current page number
  1266.         ^D      pagination date (in mm/dd/yy or appropriate country format)
  1267.         ^T      pagination time (in hh:mm format)
  1268.         ^N      name of the input file (without drive or path information)
  1269.         ^A      input file's creation date (in mm/dd/yy or appropriate country
  1270.                 format)
  1271.         ^I      input file's creation time (in hh:mm format)
  1272.         ^H      column headers (when appropriate)
  1273.         ^O      output file's name (without drive or path information)
  1274.  
  1275. You can also immediately follow any of the control codes with a field width by
  1276. including one or two digits within two percentage signs.  For example, "^O%12%"
  1277. will force the output file's name to be 12 characters in length.  This is useful
  1278. for making sure that the headers are all a uniform length, something which would
  1279. otherwise be complicated because the length of the page number can vary.
  1280.  
  1281. Without using the length codes, formatting commands like centering will be
  1282. adjusted based on the replacement contents for these codes.  A line containing a
  1283. one-digit page number will be centered differently than the exact same line
  1284. containing a three-digit page number.
  1285.  
  1286. Example:
  1287.  
  1288.         # title center width 80
  1289.         File ^N listing, page ^B
  1290.  
  1291.         # end
  1292.  
  1293. or
  1294.  
  1295.         # title center width 80
  1296.         ^O%12%                         ^B%3%                       Revised: ^A
  1297.  
  1298.         # end
  1299.  
  1300. #
  1301. # index "Varspecs"
  1302. # index "Specifying columns"
  1303. # index "Specifying variables"
  1304. # index "Columns" "Specifying"
  1305. Varspecs:
  1306.  
  1307. Several of the commands (e.g.  SELECT and SORT) expect you to pass in a
  1308. "varspec" parameter.  Varspec's indicate which variables or columns to process.
  1309.  
  1310. The format for the varspec is:
  1311.  
  1312.         n[-n] [ , n-[n] ]...
  1313.  
  1314. where "n" is a single variable/column.  "n-n" indicates you want a range of
  1315. variables/columns.
  1316.  
  1317. For FROM ASCII or FROM DBF, the "n" corresponds to a variable number.  For FROM
  1318. FIXED, the "n" corresponds to a physical one-byte column.  For example:
  1319.  
  1320.         # from ascii
  1321.         # select 1,3
  1322.         "Testing",2,4
  1323.         "All",5,7
  1324.         "This",1,6
  1325.  
  1326. says to display the 1st and 3rd variables and results in something like this:
  1327.  
  1328.         Testing  4
  1329.         All      7
  1330.         This     6
  1331.  
  1332. On the other hand, if you're processing fixed-fielded data, the varspec will
  1333. select individual columns.  So:
  1334.  
  1335.         # from fixed
  1336.         # select 1-10,15
  1337.         1234567_10_2345678
  1338.         Testing   abcdefgh
  1339.         All       abcdefgh
  1340.         This      abcdefgh
  1341.  
  1342. will come out like this:
  1343.  
  1344.         Testing   e
  1345.         All       e
  1346.         This      e
  1347.  
  1348. #
  1349. # index "Field-definition file"
  1350. # index "ASCII-delimited files"
  1351. # index "dBase files"
  1352. Field-definition file:
  1353.  
  1354. For data files (ASCII-delimited, dBase, and fixed field input files), you can
  1355. use PAGINATE.EXE to present a reasonably formatted listing of variables.  Unless
  1356. you are reading a dBase file, this program requires a field-definition file to
  1357. figure out the characteristics for each field and also to set certain file
  1358. characteristics.  If you're processing an ASCII-delimited input file, the
  1359. routine can try to create a field-definition file for you if desired.
  1360.  
  1361. The definition file can be created with any text editor.  The definition file
  1362. consists of several records with the following fields separated by spaces.
  1363. Except for the record type indicator (which must begin in column 1), all other
  1364. fields can be placed in any columns:
  1365.  
  1366.         (1) record type (see below)
  1367.         (2) length of field on input
  1368.         (3) number of decimal places for numeric data (if you don't know,
  1369.             put a "?" here; for non-numeric data, a "0" is fine) on output
  1370.         (4) length of field on output
  1371.  
  1372. Any characters after the field length are treated as comment fields.  You would
  1373. typically use this to enter the field name or column position or any other
  1374. information of use to you.
  1375.  
  1376. The data record types accepted by this routine are as follows:
  1377.  
  1378.         type C = character data
  1379.              N = numeric
  1380.              L = logical (T or F)
  1381.              D = date (in yyyymmdd format)
  1382.  
  1383. The data fields should be in the order the fields are found in the source file.
  1384.  
  1385. Note that for fixed field files, you have to account for every byte in the file.
  1386. If you have something like this:
  1387.  
  1388.         12345678_1_2345678_2_2345678_3      (column positions)
  1389.         APPLE    X Y    12 BANANAS
  1390.  
  1391. Even though you may think you only have five fields, the following .DEF file
  1392. will NOT work:
  1393.  
  1394.         ; Bad .DEF file:  Note does not account for blank spaces
  1395.         C   8 0   8 Fruit1
  1396.         C   1 0   1 Class1
  1397.         C   1 0   1 Class2
  1398.         N   5 0   5 Value
  1399.         C  11 0  11 Fruit2
  1400.  
  1401. #
  1402. You may want the Fruit1 field to be in columns 1 through 8 and Class1 to be in
  1403. column 10 but the routine will not know to skip column 9 so it will start
  1404. reading Class1 beginning in column 9, Class2 beginning in column 10, etc.  To
  1405. drop the blank positions, you have to add dummy fields on input and ask for them
  1406. to be dropped on output:
  1407.  
  1408.         ; Good .DEF file:  Spaces between fields are accounted for
  1409.         C   8 0   8 Fruit1
  1410.         C   1 0   0 Filler
  1411.         C   1 0   1 Class1
  1412.         C   1 0   0 Filler
  1413.         C   1 0   1 Class2
  1414.         C   1 0   0 Filler
  1415.         N   5 0   5 Value
  1416.         C   1 0   0 Filler
  1417.         C  11 0  11 Fruit2
  1418.  
  1419. You can also use the input field length and output field lengths to either drop
  1420. fields using other formats (by specifying a zero length for the output field
  1421. length) or for creating fields on output (by specifying a zero length for the
  1422. input field length).  You can also use this to expand on contract a field.  For
  1423. example, if Fruit1 is 8 characters long but you only want it to occupy 4
  1424. characters on output (thus the field would be truncated), specify 8 for the
  1425. input field length and 4 for the output field length.
  1426.  
  1427. If the output field length is wider than the input field length, the data values
  1428. will be shifted right or left depending on the data type.  In general, numeric
  1429. fields are shifted right (so extra spaces show up in front of the number) and
  1430. all other field types (character, logical, or date) are shifted left.
  1431.  
  1432.  
  1433. #
  1434. # index "Parameters" "Specifying"
  1435. # index "INI file"
  1436. # index "SET PAGINATE environmental variable"
  1437. # index "Marker commands" "From the command line"
  1438. Specifying parameters:
  1439.  
  1440. Parameters for this program can be set in the following ways.  The last setting
  1441. encountered always wins:
  1442.   - Read from an *.INI file (see BRUCEINI.DOC file),
  1443.   - Through the use of an environmental variable (SET PAGINATE=whatever), or
  1444.   - From the command line (see "Syntax" below)
  1445.  
  1446. In most cases, the marker commands themselves can be passed in at the command
  1447. line or through one of the other methods specified above.  The only difference
  1448. is that the marker commands then begin with "/" instead of (by default) "#".
  1449. Some marker commands (like TITLE ... END) don't make sense in the command line.
  1450.  
  1451.  
  1452. # index "Character-translation file"
  1453. # index "/Linitfile parameter"
  1454. # index "Graphics characters" "Removing"
  1455. # index "Non-printable characters" "Removing"
  1456. # index "Characters" "Removing"
  1457. # index "(NONE) replacement"
  1458. # index "/Iinitfile parameter"
  1459. Character-translation file:
  1460.  
  1461. PAGINATE will process a character-translation (lookup) table if one is found.
  1462. This table can be in your standard *.INI file (e.g.  PAGINATE.INI) if desired or
  1463. it can be a separate file specified using the /Linitfile parameter.
  1464.  
  1465. This table allows you to replace all instances of one character in your input
  1466. file with another when you write the file out.
  1467.  
  1468. What would you use this for?  Your document might contain characters like
  1469. graphic characters.  You might have problems if you wanted to e-mail this
  1470. document to someone or print it on a printer than didn't recognize the
  1471. characters.
  1472.  
  1473. #
  1474. For example, something like:
  1475.  
  1476. # unit verbatim
  1477.          ┌─┬─┐   ╔═╦═╗
  1478.          │ │ │   ║ ║ ║
  1479.          ├─┼─┤   ╠═╬═╣
  1480.          │ │ │   ║ ║ ║
  1481.          └─┴─┘   ╚═╩═╝
  1482. # end
  1483.  
  1484. looks great on the screen but it might print out horribly.
  1485.  
  1486. If you want, you can tell PAGINATE to do a one-for-one character replacement on
  1487. any characters.  This is done through the character-translation file.  This
  1488. file, which can be embedded in the standard PAGINATE.INI file, consists of a
  1489. series of lines in the following format:
  1490.  
  1491.         inchar = outchar
  1492.  
  1493. where "inchar" is the character to change from and "outchar" is what to change
  1494. the character to.  Both portions can consist of regular non-space ASCII text
  1495. characters (like "A" or "z") as well as hexadecimal values (in the form &Hxx) or
  1496. decimal values (in the form \nnn).  (See the BRUCEHEX.DOC file.) To remove a
  1497. character entirely, assign it the value of (NONE).  You cannot use a space or
  1498. equal sign in either "inchar" or "outchar"; use the hexadecimal or decimal
  1499. representations instead.  The table does not have to be in any specified order.
  1500. Lines can end with "/*" followed by a comment if you want.  Examples:
  1501.  
  1502.         \186 = |     /* ║ becomes |
  1503.         \205 = -     /* ═ becomes -
  1504.         \206 = +     /* ╬ becomes +
  1505.         \027 = (NONE)  /* Remove excape characters entirely
  1506.  
  1507. Since lines beginning with "/" are treated as command-line defaults, you must
  1508. use \047 or &H2F if you want to override the definition of "/".
  1509.  
  1510. NOTE:  If a character-translation file is specified, all instances of Alt-0
  1511. will be removed from the resulting file.  (This is how the program
  1512. handles replacements with (NONE)).  Redefine \000 as \032 or something if you
  1513. want to keep them.
  1514.  
  1515. # index "Alt-255 key" "Removing"
  1516. Note that Alt-255 is automatically translated to Alt-32 (regular space)
  1517. even if character-translation table is used.  Alt-255 is used internally by
  1518. the program to handle things like bullets and such.  It is also the recommended
  1519. character to use to avoid certain combinations of words from wrapping.
  1520.  
  1521. Blank lines or those beginning with the following are ignored as comments:
  1522.  
  1523.         ;    (semi-colon)
  1524.         :    (colon)
  1525.         '    (quote)
  1526.  
  1527. # index "PAGNOASC.INI"
  1528. The lookup tables can also be read from a different table specified by the
  1529. /Linitfile parameter.  Use the enclosed PAGNOASC.INI as your lookup file if you
  1530. want to remove all non-standard characters from your file.  Modify as necessary.
  1531.  
  1532.  
  1533. #
  1534. # index "Examples"
  1535. # index "Directories" "Multicolumn"
  1536. # index "Formatting commands" "MARKER=c" "Example"
  1537. # index "MARKER=c" "Example"
  1538. Examples:
  1539.  
  1540. This section adds some examples of how you can use PAGINATE.  I'll add to it
  1541. over time.
  1542.  
  1543. Multicolumn Directories:  You want to generate a multicolumn listing of
  1544. directories which are sorted going down the page instead of across the page
  1545. like "DIR /W" does.  PAGINATE can handle this fairly easily.
  1546.  
  1547. Create a control file called C:\DIRW.CTL with these statements (the SETUP and
  1548. RESET statements work for Hewlett-Packard printers to put you into compressed
  1549. mode):
  1550.  
  1551.         #WIDTH 132
  1552.         #SETUP "\027E"
  1553.         #RESET "\027E\027(s16.66H"
  1554.         #MULTICOLUMN 7
  1555.         #MARKER=*
  1556.  
  1557. If you don't want it to be in a compressed mode, use the following control file:
  1558.  
  1559.         #WIDTH 80
  1560.         #MULTICOLUMN 5
  1561.         #MARKER=*
  1562.  
  1563. (The #MARKER=* is in there because a number of shareware companies have
  1564. gotten into using weird characters as the first letter of the file name to
  1565. make sure the file sorts higher in an alphabetical list.  Several programs
  1566. may begin with a pound sign but none can begin with an asterisk.)  Then create a
  1567. batch file called DIRW.BAT:
  1568.  
  1569.         DIR /ON > TEMP.TXT
  1570.         PAGINATE TEMP.TXT TEMP.OUT /CC:\DIRW.CTL /OVERWRITE
  1571.         DEL TEMP.TXT
  1572.  
  1573. This will route your directory to a disk file and rewrite it as TEMP.OUT in a
  1574. multicolumn format with printer controls.
  1575.  
  1576.  
  1577. # index "Windows" "Long-line files"
  1578. # index "Lines" "Wrapping long ones"
  1579. # index "Notepad" "Converting from"
  1580. Those long-line things you get from writing out the file from Windows:  You've
  1581. done this.  You ask for a text file.  They've created it using the Windows
  1582. notepad.  You look at it and the lines scroll endlessly--one line per paragraph.
  1583. How are you supposed to print that?!
  1584.  
  1585. Simple.  Let's say the file name is NOTEPAD.TXT.  Just issue the following
  1586. command:
  1587.  
  1588.         PAGINATE NOTEPAD.TXT /ALIGN /WIDTH=80
  1589.  
  1590.  
  1591. #
  1592. # index "Syntax"
  1593. Syntax:
  1594.  
  1595. # unit
  1596. # verbatim
  1597.     PAGINATE [ filespec | @listfile ] [ outfile ] [ /Cctlfile ] [ /DEBUG ]
  1598.       [ /OVERWRITE | /APPEND | /-OVERWRITE | /OVERASK ]
  1599.       [ /marker command ]...
  1600.       [ /EXT=.xxx ] [ /PAUSE ] [ /BEEP ] [ /MONO ]
  1601.       [ /Iinitfile | /-I ] [ /Linitfile ] [ /? ] [ /?&H ]
  1602. # end
  1603.  
  1604. where:
  1605.  
  1606. # index "Filespec parameter"
  1607. # index "Files" "Input"
  1608. "filespec" tells the routine which file or files are to be processed.  It can
  1609. include path information if desired.  It can also include standard DOS wildcards
  1610. as long as an output file is not specified.  The input files can contain INCLUDE
  1611. statements to add in other files to process.  If no input specification
  1612. (filespec or @listfile) is provided, you'll be prompted for one.
  1613.  
  1614. # index "@listfile parameter"
  1615. # index "Files" "Input"
  1616. "@listfile" allows you to have a variety of file specifications saved in a text
  1617. file named "listfile".  Each line in the file should consist of one file
  1618. specification, each of which can include a path and wildcards if desired.  Blank
  1619. lines and lines beginning with semi-colons, colons, or quotes are ignored.  If
  1620. no input specification (filespec or @listfile) is provided, you'll be prompted
  1621. for one.
  1622.  
  1623. # index "Outfile parameter"
  1624. "outfile" specifies the name of the output file that is to contain the resulting
  1625. text.  By default, the output file name will be the name of the input file with
  1626. a .PAG extension.  (The default .PAG extension can be overridden using the
  1627. "/EXT=.xxx" parameter.)
  1628.  
  1629. # index "Ctlfile parameter"
  1630. # index "/Cctlfile parameter"
  1631. "/Cctlfile" is basically the same thing as the infile but it typically contains
  1632. only marker commands.  For example, you might have a straight text file
  1633. contained in "infile" and then use the "ctlfile" to say how that text file
  1634. should be processed.
  1635.  
  1636. # index "/DEBUG parameter"
  1637. "/DEBUG" is used for debugging purposes.  You might use it when you get an
  1638. error message that doesn't clearly tell you where the error occurred.  /DEBUG
  1639. will show you the text as it's processed and let you see what's actually being
  1640. processed and written.
  1641.  
  1642. # index "/OVERWRITE parameter"
  1643. "/OVERWRITE" says to overwrite the output file if it exists already.
  1644.  
  1645. # index "/-OVERWRITE parameter"
  1646. "/-OVERWRITE" says to abort if the output file exists already.
  1647.  
  1648. # index "/APPEND parameter"
  1649. "/APPEND" says to append (add) to the output file if it exists already.  This
  1650. option is only available if you're creating either a fixed-field or ASCII-
  1651. delimited output file.
  1652.  
  1653. # index "/OVERASK parameter"
  1654. "/OVERASK" says to ask if the output file exists already.  This is initially
  1655. the default.
  1656.  
  1657. "/marker command" allows you to specify one or more marker commands.  These are
  1658. spelled out in this documentation.  Note that not all marker commands can appear
  1659. in the command line whereas all marker commands can instead be embedded in
  1660. either the control file or the document itself.
  1661.  
  1662. # index "/EXT=.xxx parameter"
  1663. "/EXT=.xxx" allows you to specify a different default file extension for the
  1664. output file.  This parameter only matters if you do not explicitly specify an
  1665. output file name.  The default value is "/EXT=.PAG".
  1666.  
  1667. #
  1668. # index "/PAUSE parameter"
  1669. "/PAUSE" waits for you to press ENTER if there is a compilation error and then
  1670. returns you to DOS.  This is useful if you're using PAGINATE to process a whole
  1671. series of files.  The default value is "/-PAUSE".
  1672.  
  1673. # index "/-PAUSE parameter"
  1674. "/-PAUSE" says to return to DOS without prompting you if there is a compilation
  1675. error.  This is initially the default.
  1676.  
  1677. # index "/BEEP parameter"
  1678. "/BEEP" says to sound a tone when the program is finished executing.  The
  1679. default value is "/-BEEP".
  1680.  
  1681. # index "/-BEEP parameter"
  1682. "/-BEEP" says to not sound a tone when the program finishes.  This is initially
  1683. the default.
  1684.  
  1685. # index "/MONO parameter"
  1686. # index "/-COLOR parameter"
  1687. "/MONO" (or "/-COLOR") does not try to override screen colors.  Initially
  1688. defaults to "/COLOR".
  1689.  
  1690. # index "/COLOR parameter"
  1691. # index "/-MONO" parameter"
  1692. "/COLOR" (or "/-MONO") allows screen colors to be overridden.  This is initially
  1693. the default.
  1694.  
  1695. # index "/Iinitfile parameter"
  1696. "/Iinitfile" says to read an initialization file with the file name "initfile".
  1697. The file specification *must* contain a period.  Initfiles are described in the
  1698. BRUCEINI.DOC file.  Initially defaults to "/IPAGINATE.INI".
  1699.  
  1700. # index "/-I parameter"
  1701. # index "/INULL parameter"
  1702. "/-I" (or "/INULL") says to skip loading the initialization file.
  1703.  
  1704. # index "/Linitfile parameter"
  1705. "/Linitfile" says that the "Character-translation table" codes are found in a
  1706. file other than from the default "/Iinitfile" file.  This is primarily useful if
  1707. you want to have a master *.INI file and a separate code lookup table.
  1708. PAGNOASC.INI is provided as one sample character-translation table.  It removes
  1709. all graphics and other possibly non-printable characters from the output file.
  1710.  
  1711. # index "/? parameter"
  1712. "/?" or "/HELP" or "HELP" shows you the syntax for the command.
  1713.  
  1714. # index "/?&H parameter"
  1715. "/?&H" gives you a hexadecimal and decimal conversion table.
  1716.  
  1717.  
  1718. #
  1719. # index "Return codes"
  1720. # index "ERRORLEVEL codes"
  1721. Return codes:
  1722.  
  1723. PAGINATE returns the following ERRORLEVEL codes:
  1724.  
  1725.         0 = no problems
  1726.       254 = errors encountered in processing input files
  1727.       255 = syntax problems or /? requested
  1728.  
  1729.  
  1730. # index "Guthrie, Bruce"
  1731. # index "Wayne Software"
  1732. # index "bguthrie@nmaa.org"
  1733. # index "e-mail contact"
  1734. # index "Author"
  1735. Author:
  1736.  
  1737. This program was written by Bruce Guthrie of Wayne Software.  It is free for use
  1738. and redistribution provided relevant documentation is kept with the program, no
  1739. changes are made to the program or documentation, and it is not bundled with
  1740. commercial programs or charged for separately.  People who need to bundle it in
  1741. for-sale packages must pay a $50 registration fee to "Wayne Software" at the
  1742. following address.
  1743.  
  1744. Additional information about this and other Wayne Software programs can be found
  1745. in the file BRUCEymm.DOC which should be included in the original ZIP file.
  1746. ("ymm" is replaced by the last digit of the year and the two digit month of the
  1747. release.  BRUCE512.DOC came out in December 1995.  This same naming convention
  1748. is used in naming the ZIP file that this program was included in.) Comments and
  1749. suggestions can also be sent to:
  1750.  
  1751.  
  1752.                 Bruce Guthrie
  1753.                 Wayne Software
  1754.                 113 Sheffield St.
  1755.                 Silver Spring, MD 20910
  1756.  
  1757.                 fax: (301) 588-8986
  1758.                 e-mail: bguthrie@nmaa.org
  1759.                 http://hjs.geol.uib.no/guthrie/
  1760.  
  1761. See BRUCEymm.DOC file for revision history.
  1762.  
  1763. Please provide an Internet e-mail address on all correspondence.
  1764.  
  1765. # title center width=80
  1766. PAGINATE Index                       ^B%3%                       Revised: ^A
  1767.  
  1768. # end
  1769. #
  1770. # multicolumn 2
  1771. # include index
  1772. # end
  1773.